package com.huanf.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author: 35238
 * 功能: 不管有没有自定义分页功能，都要写入这个分页插件，不然分页的一些参数获取不了，例如是否有下一页、总记录数、总页数这三个参数就获取不到
 * 时间: 2024-01-01 15:44
 */
@Configuration //这个注解表示该类是配置类
@MapperScan("com.huanf.mapper")//该注解用于扫描mapper接口所在的包，是从MyBatisplusApplication类剪切过来的
public class MyBatisPlusConfig {

    //通过MybatisPlusInterceptor拦截器来配置MyBatis-Plus中的分页插件
    @Bean
    public MybatisPlusInterceptor zidingyi_mybatisPlusInterceptor(){
        //先创建MybatisPlusInterceptor拦截器的对象，创建出来的对象就是插件对象
        MybatisPlusInterceptor zidingyi_interceptor = new MybatisPlusInterceptor();


        //addInnerInterceptor表示内部插件，PaginationInnerInterceptor表示分页插件，DbType.MYSQL表示数据库类型是MySQL
        zidingyi_interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        //addInnerInterceptor表示内部插件，OptimisticLockerInnerInterceptor表示乐观锁插件
        zidingyi_interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());


        //返回你创建好的插件对象
        return zidingyi_interceptor;
        //如何测试，也就是如何写功能，在src/test/java/com.huanf.mybatisplus目录下新建MyBatisPlusPluginsTest测试类，具体代码见MyBatisPlusPluginsTest类
    }
}
